# meta class
# type可以查看一个函数或变量的类型
class Hello(object):
    def hello(self, name='world'):
        print('Hello, %s.' % name)

print("Hello: ", type(Hello))
h = Hello()
print("h 是一个 Hello 类实例，类型为：", type(h))
print('Hello 类里的 hello 方法, 类型为：', type(Hello.hello))

# type还可以创建一个新的类，要创建class 对象，需要传入的内容有：
# 1.class名称 2. 继承的父类集合，以元组的形式传入 3. class 的方法名称与函数绑定，即 class 类中含有的方法，通过动态绑定的形式与现有函数产生关联
def fn(self, name="rdn", age = 22):
    print(f"My name is {name}. I am {age} years old.")

Student = type('Student', (object,), dict(intro=fn))
print(type(Student))

s = Student()
s.intro()

# metaclass

